Skip to content

ci: 添加命令行自动化测试 workflow - #44

Closed
Dame-time-0034 wants to merge 4 commits into
OpenHUTB:hutbfrom
Dame-time-0034:ci/automation-tests
Closed

Dame-time-0034 wants to merge 4 commits into
OpenHUTB:hutbfrom
Dame-time-0034:ci/automation-tests

Conversation

@Dame-time-0034

@Dame-time-0034 Dame-time-0034 commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

这个 PR 做什么

让 GitHub Actions 能自动运行引擎的自动化测试,不用人打开编辑器点按钮。

以前怎么做,现在怎么做

以前:打开编辑器,Window → Test Automation,手动勾选测试,再点 Start Tests。

现在:CI 里用一条命令完成:

UE4Editor 空工程.uproject \
  -ExecCmds="Automation RunTests <测试名>" \
  -unattended -nopause -nullrhi -nosound -NoEnginePlugins \
  -TESTEXIT="Automation Test Queue Empty" \
  -ReportExportPath=Saved/Automation/Reports

CI 的流程是:编译编辑器 → 生成一个空工程 → 跑测试 → 读测试报告 → 有失败就让检查变红。

我在服务器上实际验证了什么

  1. 单测 System.Core.Misc.Timespan 连续跑 2 次,都是 Passed,退出码 0。
  2. 空工程必须加 -NoEnginePlugins,不加会因为个别引擎插件没有编译而启动失败。
  3. 默认测试集 13 个测试全部通过,失败 0 个,耗时约 1 分钟(包含编辑器启动)。
  4. 测试报告 index.json、index.html 能正常生成。
  5. 已知问题:引擎自带的 AsyncIODelete 测试在 Linux 上会崩溃,所以默认测试集没有选它。

怎么判断测试有没有通过

不能只看退出码。编辑器在测试失败时也会返回 0,所以 CI 会读取 index.json 里的 failed 字段来判断。如果编辑器本身崩溃(例如退出码 139),检查会直接失败。

注意事项

  • 第一次在没缓存的机器上运行,需要下载引擎依赖,会比较慢;之后会复用缓存。
  • 想换测试范围,可以在 Actions 页面手动触发时填写 test_filter。
  • 这次修改还修复了 fork PR 拿不到 GIT_CODE 导致构建直接失败的问题:没有 secret 时,和现有 Linux CI 一样使用仓库里已有的口令。

Closes #11

@Dame-time-0034
Dame-time-0034 deleted the ci/automation-tests branch November 6, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

启用自动测试插件

1 participant